home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 7
/
Aminet 7 - August 1995.iso
/
Aminet
/
comm
/
mail
/
thor201pch.lha
/
scripts
/
AMBBS.NComm.script
Wrap
Text File
|
1995-05-07
|
29KB
|
1,288 lines
; $VER: AMBBS.NComm.script 3.21 (07.05.95)
; ABBS/MBBS NComm Script for THOR
; By Eivind Nordseth, Ultima Thule Software
REQUEST OFF
set $dox = ""
set $oldconf = ""
set $gethold = "FALSE"
set $fixtimeout = ""
set $dtmpfile = ""
set $readmode = ""
set $private = ""
set $userinfo = "FALSE"
set $repfile = ""
set $qwkcommand = "Q QWK"
set $qwkcfg = "FALSE"
set $qwkerr = "TRUE"
set $rengrab = ""
set $doctrlx = "FALSE"
set $done = "FALSE"
set $notify = ""
set $packageOK = "FALSE"
set $gotprivfiles = "FALSE"
set $newfilesdate = ""
when "AFront" gosub AFrontDetect
cli $THORPath"bin/ScriptServ \""$BBSName"\" WRITECFG EV 0 EV 1 EV 2 EV 3 EV 4 EV 5 EV 6 EV 7 EV 8 EV 10 EV 11 EV 12 EV 13 EV 14"
if exists "t:privupl"$BBSName then cli "delete >nil: \"t:privupl"$BBSName"\""
if exists "t:filenote"$BBSName then cli "delete >nil: \"t:filenote"$BBSName"\""
if exists "t:NoLogOut" then cli "delete >nil: t:NoLogOut"
if exists "t:DoLogOut" then cli "delete >nil: t:DoLogOut"
varfile "t:"$BBSName".CONFIG"
readvar $CfgVer
readvar $BBSID
readvar $BBSType
readvar $Path
readvar $PostConf
readvar $UpLoadDir
readvar $UserName
readvar $UserStreet
readvar $UserAddress
readvar $UserCountry
readvar $UserPhone
readvar $NewFiles
readvar $AutoPDnl
readvar $AutoLogoff
readvar $UseColors
readvar $AnsiMenues
readvar $Bulletins
varfile close
if !$CfgVer == "3" then message "Incompatible version of ScriptServ"
if !$CfgVer == "3" then goto AllDone
cli "delete >nil: \"t:"$BBSName".CONFIG\""
set $LogFile = $Path"ScriptMsg.txt"
when "\r\nNO CARRIER\r\n" goto AllDone
send "^K\n\n"
autoxfer off ; Turn off G&R commands
autoup off ; Turn off Zmodem autoupload
autodown on ; Turn on Zmodem autodownload
if $BBSType == "MBBS" then menuselect TRANSLATE 1 8 ; Use IBN character set
if $BBSType == "MBBS" then set $charset = "IBN" ; Use IBN character set
if $BBSType == "ABBS" then menuselect TRANSLATE 1 0 ; Use ISO character set
if $BBSType == "ABBS" then set $charset = "ISO" ; Use ISO character set
if $BBSType == "MBBS_QWK" then menuselect TRANSLATE 1 8 ; Use IBN character set
if $BBSType == "MBBS_QWK" then set $charset = "IBN" ; Use IBN character set
if $BBSType == "ABBS_QWK" then menuselect TRANSLATE 1 0 ; Use ISO character set
if $BBSType == "ABBS_QWK" then set $charset = "ISO" ; Use IBN character set
converse "FIRST name?" $UserName" Q\n"
if $BBSType == "ABBS_QWK" then menuselect TRANSLATE 1 8 ; Use IBN character set
if $BBSType == "ABBS_QWK" then set $charset = "IBN" ; Use IBN character set
converse "will echo):" "\p\n"
dwhen "AFront"
capture "t:privupl"$BBSName
when "--more--" send "C"
when "coming online" gosub SysOp
when "The following" set $gotprivfiles = "TRUE"
if $BBSType == "MBBS" then set $docmd = "CHAT N U L 0 MF 50 S IBN\n"
if $BBSType == "ABBS" then set $docmd = "CHAT N U L 0 MF 50 S ISO\n"
if $BBSType == "MBBS_QWK" then set $docmd = "CHAT N U L 0 MF 50 S IBN\n"
if $BBSType == "ABBS_QWK" then set $docmd = "CHAT N U L 0 MF 50 S IBN\n"
gosub DoCommand
;***************** Event loop
wait "Command"
set $doctrlx = "TRUE"
dwhen "The following"
capture off
if !exists "t:"$BBSName".EVENTS" then goto afterEvents
varfile "t:"$BBSName".EVENTS"
eventLoop:
set $done = "FALSE"
readvar $eventnr
readvar $event
if $eventnr == "EOF" then goto evLoopEnd
if $event == "EOF" then goto evLoopEnd
if $event == "0" then gosub EnterMsg
if $event == "1" then gosub ReplyMsg
if $event == "2" then gosub JoinConf
if $event == "3" then gosub ResignConf
if $event == "4" then gosub DownloadFile
if $event == "5" then gosub UploadFile
if $event == "6" then gosub GetConfList
if $event == "7" then gosub ConfigureBBS
if $event == "8" then gosub SendUserInfo
if $event == "10" then gosub GetNewFiles
if $event == "11" then gosub CommandEvent
if $event == "12" then gosub AutoLogOff
if $event == "13" then gosub RetractMsg
if $event == "14" then gosub RetractFile
if $event == "7769" then set $done = "TRUE"
if $done == "TRUE" then cli "run >nil: "$THORPath"bin/ScriptServ \""$BBSName"\" DONE "$eventnr
if !$done == "TRUE" then cli "run >nil: "$THORPath"bin/ScriptServ \""$BBSName"\" ERROR "$eventnr
goto eventLoop
evLoopEnd:
varfile close
cli "delete >nil: \"t:"$BBSName".EVENTS\""
afterEvents:
;***************** Grab messages
set $rengrab = "y"
if $BBSType == "ABBS_QWK" then goto HandleABBSQWK
if $BBSType == "ABBS" then set $docmd = "U GF MBBS\n"
if $BBSType == "ABBS" then gosub DoCommand
set $packageOK = "TRUE"
set $docmd = "R DUMP ALL\n"
gosub DoCommand
when "<0>" goto grabd
converse "Command" "SE Z\n"
grabd:
dlwhen
goto AfterGrabing
;***************** Do ABBS_QWK packet handling
HandleABBSQWK:
set $docmd = "U GF QWK\n"
gosub DoCommand
if !exists $UpLoadDir$BBSID".REP" then goto NoABBSRepFile
set $docmd = "Q MU\n"
gosub DoCommand
when "parsed successfully" set $qwkerr = "FALSE"
wait "B01"
upload $UpLoadDir$BBSID".REP",Z
gosub NoTimeout
capture $Path"QWKMsg.txt"
wait "Main Command"
capture off
dlwhen
gosub SetUpTimeout
if $qwkerr == "TRUE" then goto ABBSRepFileFail
set $packageOK = "TRUE"
cli "delete >nil: "$UpLoadDir$BBSID".REP"
cli "delete >nil: "$Path"QWKMsg.txt"
set $doctrlx = "TRUE"
goto NoABBSRepFile
ABBSRepFileFail:
set $appendsource = $Path"QWKMsg.txt"
set $appenddest = $LogFile
gosub AppendFile
set $doctrlx = "TRUE"
NoABBSRepFile:
set $docmd = "R DUMP ALL\n"
gosub DoCommand
gosub NoTimeout
when "<0>" goto grabQwkDone
converse "Command" "SE Z\n"
grabQwkDone:
dlwhen
goto AfterGrabing
;***************** Package Done
AfterGrabing:
set $doctrlx = "TRUE"
wait "Command"
if $packageOK == "TRUE" then cli "run >nil: "$THORPath"bin/ScriptServ \""$BBSName"\" PACKAGEDONE"
set $rengrab = "y"
;***************** Capture Newfiles.txt
if !$NewFiles == "y" then goto AfterNewFiles
set $docmd = ""
gosub DoCommand
when "Detailed list (Enter=N):" send "n\n"
cli "Delete >nil: "$Path"Newfiles.txt"
capture $Path"Newfiles.txt"
if $newfilesdate == "" then set $newfilesdate = ";"
send "F N "$newfilesdate" ;\n"
gosub NoTimeout
when "Read Command" goto NewFilesDone
wait "File Command"
NewFilesDone:
dwhen "Read Command"
dwhen "Detailed list (Enter=N):"
capture off
set $doctrlx = "TRUE"
AfterNewFiles:
;***************** Auto dnload private files
if !$AutoPDnl == "y" then goto NoPrivUpl
if !$gotprivfiles == "TRUE" then goto NoPrivUpl
if !exists "t:privupl"$BBSName then goto NoPrivUpl
cli $THORPath"bin/ScriptServ >\"t:privupl"$BBSName".tmp\" \""$BBSName"\" PrivUploadFile \"t:privupl"$BBSName"\""
if !exists "t:privupl"$BBSName".tmp" then goto NoPrivUpl
varfile "t:privupl"$BBSName".tmp"
if !$doctrlx == "TRUE" then wait "Command"
PrivLoop:
readvar $dtmpfile
if $dtmpfile == "" then goto PrivLoopEnd
if $dtmpfile == "EOF" then goto PrivLoopEnd
send "F D "$dtmpfile"\n"
capture "t:filenote"$BBSName
gosub NoTimeout
wait "Command"
if !exists $LogFile then write $LogFile "Messages from script:\n"
write $LogFile " Downloaded private file: "$dtmpfile"\n"
capture off
goto PrivLoop
PrivLoopEnd:
set $doctrlx = "TRUE"
varfile close
cli "delete >nil: \"t:privupl"$BBSName".tmp\""
NoPrivUpl:
;***************** Get files in hold
if exists "t:privupl"$BBSName then cli "delete >nil: \"t:privupl"$BBSName"\""
if !$gethold == "TRUE" then goto NoHold
set $docmd = "F GET\n"
gosub DoCommand
gosub NoTimeout
NoHold:
;***************** Update filenotes of downloaded files.
if !exists "t:filenote"$BBSName then goto NoUpdateNotes
if !$doctrlx == "TRUE" then wait "Command"
set $doctrlx = "TRUE"
cli $THORPath"bin/ScriptServ \""$BBSName"\" UPDATEFILENOTES \"t:filenote"$BBSName"\""
cli "delete >nil: \"t:filenote"$BBSName"\""
NoUpdateNotes:
;***************** Ready for logout
if exists "t:DoLogOut" then goto DoLogOut
if $AutoLogoff == "n" then goto NoLogOut
if exists "t:NoLogOut" then goto NoLogOut
DoLogOut:
set $docmd = "CHAT A U L 30 MF 0\n"
gosub DoCommand
set $docmd = "G Y N Y\n"
gosub DoCommand
when "\r\nNO CARRIER\r\n" goto Hanged
delay 2
repeat
hangup
delay 2
until !CARRIER
Hanged:
dlwhen
goto AllDone
NoLogOut:
set $docmd = "CHAT A U L 30 MF 0 W R\n"
gosub DoCommand
dwhens
timeout 0
AllDone:
request on
end
Hung:
beep
message "\nI think the board has hung."
message "\nTurn off this script within 20 seconds to stop me from logging out !!"
delay 20
beep
message "\nWARNING: Logout in progress.\n"
hangup
goto AllDone
SysOp:
send "Sorry, you are trying to chat with a script.\n"
send "Please put me back to the BBS at once.\n"
set $Timeouts = "0"
wait "SYSOP is going offline!"
set $Timeouts = "0"
return
;************************************************
DoCommand:
if $doctrlx == "TRUE" then send "^X"
converse "Command" $docmd
if !$rengrab == "" then gosub RenameGrab
if !$fixtimeout == "" then gosub SetupTimeout
set $doctrlx = "FALSE"
return
;************************************************
NoTimeout:
set $fixtimeout = "d"
timeout 0
return
SetupTimeout:
set $fixtimeout = ""
set $Timeouts = "0"
timeout 60 gosub SendCTRLX
return
SendCTRLX:
set $fixtimeout = "d"
if $Timeouts == "2" then timeout 20 gosub Hung
if $Timeouts == "2" then send "^X"
if $Timeouts == "1" then send $docmd
if $Timeouts == "1" then set $Timeouts = "2"
if $Timeouts == "0" then send "^X"
if $Timeouts == "0" then set $Timeouts = "1"
return
Hung:
beep
message "\nI think the board has hung."
message "\nTurn off this script within 20 seconds to stop me from logging out !!"
delay 20
beep
message "\nWARNING: Logout in progress.\n"
hangup
goto AllDone
;************************************************
RenameGrab:
set $rengrab = ""
cli $THORPath"bin/ScriptServ \""$BBSName"\" RENAMEGRAB"
cli "run >nil: sys:rexxc/rx 'address THOR.01 RESCAN'"
return
;************************************************
; Enter message subroutine
; Uses variables:
; $conf - conference for message
; $sendto - user message is to (Empty string is equal to ALL)
; $subject - subject of message
; $msgfile - file message is in
; $private - private message (0/!0)
EnterMsg:
readvar $conf
readvar $sendto
readvar $msgfile
readvar $subject
readvar $private
if $private == "" then set $private = "0"
if !$private == "0" then set $private = "y"
if $private == "0" then set $private = "n"
set $done = "TRUE"
when "Private message" send $private"\n"
when "other users (Enter=N)" send "\n"
when "Send message to" send $sendto"\n"
when "enter both the first AND" goto etomyself
when "that name is not registered" goto etomyself
when "ALL is not allowed here!" goto etomyself
when "READ ONLY conference. Us" goto einpost1
when "not a member of this con" goto einpost2
when "Invalid conference selec" goto einpost3
when "Topics are:" goto einpost4
when "Couldn't save msg!" goto einpost5
if $conf == $oldconf then goto InConf
set $docmd = "J "$conf"\n"
gosub DoCommand
if $done == "FALSE" then goto enterRet
set $oldconf = $conf
InConf:
if $sendto == "" then set $sendto = "ALL"
set $docmd = "E\n"
gosub DoCommand
if $done == "FALSE" then goto enterRet
set $dlewhen = "FALSE"
set $dox = ""
gosub SendMessage
if $done == "FALSE" then goto enterRet
enterErr:
wait "Command"
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
set $doctrlx = "TRUE"
enterRet:
return
etomyself:
gosub Startlogfile
write $LogFile " Conference "$conf", unable to enter message to "$sendto"\n"
send "^X\n"
set $done = "FALSE"
goto enterErr
einpost5:
gosub Startlogfile
write $LogFile " The BBS couldn't save the message.\n"
set $done = "FALSE"
goto enterErr
einpost4:
gosub Startlogfile
write $LogFile " Invalid conference topic: "$conf"\n"
send "\n"
set $oldconf = ""
set $done = "FALSE"
goto enterErr
einpost3:
gosub Startlogfile
write $LogFile " Invalid conference selection: "$conf"\n"
set $oldconf = ""
gosub FixJoinErr
set $done = "FALSE"
goto enterErr
einpost2:
gosub Startlogfile
write $LogFile " User "$sendto" in not a member of conference "$conf"\n"
set $done = "FALSE"
goto enterErr
einpost1:
gosub Startlogfile
write $LogFile " Conference "$conf" is READ ONLY\n"
set $done = "FALSE"
goto enterErr
;************************************************
; Reply message subroutine
; Uses variables:
; $conf - conference for message
; $replyto - reply to message
; $subject - subject of message
; $msgfile - file message is in
; $private - private message (y/n)
; $sendto - user the message is to
ReplyMsg:
readvar $conf
readvar $sendto
readvar $msgfile
readvar $dummy
readvar $subject
readvar $replyto
readvar $private
if $private == "" then set $private = "0"
if !$private == "0" then set $private = "y"
if $private == "0" then set $private = "n"
set $done = "TRUE"
when "Private message" send $private"\n"
when "Include original message" send "n\n"
when "READ ONLY conference you" goto readonlyconf
when "Invalid conference selec" goto invalidconf
when "Topics are:" goto invalidtopic
when "not available for reply." goto notavail
when "Message not found !" goto REnotfound
when "not a member of this con" goto nomember
when "Couldn't save msg!" goto ReSaveErr
if $conf == $oldconf then goto InConf2
set $docmd = "J "$conf"\n"
gosub DoCommand
if $done == "FALSE" then goto replyRet
set $oldconf = $conf
InConf2:
set $docmd = "R RE "$replyto"\n"
gosub DoCommand
if $done == "FALSE" then goto replyRet
set $dox = "^X"
gosub SendMessage
if $done == "FALSE" then goto replyRet
replyErr:
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
wait "Command"
set $doctrlx = "TRUE"
replyRet:
return
readonlyconf:
gosub Startlogfile
write $LogFile " Conference "$conf" is READ ONLY, unable to reply message "$replyto"\n"
set $done = "FALSE"
goto replyErr
invalidconf:
gosub Startlogfile
write $LogFile " Invalid conference selection: "$conf", unable to reply message "$replyto"\n"
gosub FixJoinErr
set $done = "FALSE"
goto replyErr
invalidconf:
gosub Startlogfile
write $LogFile " Invalid conference topic: "$conf", unable to reply message "$replyto"\n"
send "\n"
set $done = "FALSE"
goto replyErr
nomember:
gosub Startlogfile
write $LogFile " "$sendto" is not member of conference: "$conf", unable to reply message "$replyto"\n"
set $done = "FALSE"
goto replyErr
notavail:
gosub Startlogfile
write $LogFile " Message "$replyto" in "$conf" not available for reply\n"
set $done = "FALSE"
goto replyErr
REnotfound:
gosub Startlogfile
write $LogFile " Message "$replyto" in "$conf" was not found, and was not available for reply\n"
set $done = "FALSE"
goto replyErr
ReSaveErr:
gosub Startlogfile
write $LogFile " The BBS couldn't save the message.\n"
set $done = "FALSE"
goto replyErr
;************************************************
; Subroutine for sending message
SendMessage:
when "--7-" goto sendit
converse "Subject" $dox$subject"\n"
wait "--7-"
sendit:
dlwhen
if $userinfo == "FALSE" then goto nouserinfo
if $BBSType == "ABBS" then gosub SendABBSClear
if $BBSType == "ABBS_QWK" then gosub SendABBSClear
if $BBSType == "MBBS" then send "^KC"
if $BBSType == "MBBS_QWK" then send "^KC"
nouserinfo:
send "^KZ"
ascsend $Path$msgfile
send "\w^Z^Z"
return
;************************************************
; ABBS clear editor
SendABBSClear:
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
send "^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y"
return
;************************************************
Startlogfile:
if !exists $LogFile then write $LogFile "Messages from script:\n"
write $LogFile "Error in event nr "$eventnr":\n"
return
;************************************************
FixJoinErr:
if $BBSType == "MBBS" then converse "name to join" "\n"
if $BBSType == "MBBS_QWK" then converse "name to join" "\n"
if $BBSType == "ABBS" then send "^K"
if $BBSType == "ABBS" then converse "Join conference:" "\n"
if $BBSType == "ABBS_QWK" then send "^K"
if $BBSType == "ABBS_QWK" then converse "Join conference:" "\n"
return
;************************************************
; Join conference
; Uses variables:
; $conf - conference to join
JoinConf:
readvar $conf
set $done = "TRUE"
when "Invalid conference sele" gosub joinerr
when "Topics are:" gosub topicserr
set $docmd = "J "$conf"\n"
gosub DoCommand
set $oldconf = $conf
wait "Command"
dlwhen
dlwhen
set $doctrlx = "TRUE"
return
joinerr:
gosub Startlogfile
write $LogFile " Invalid conference selection: "$conf", Unable to join\n"
gosub FixJoinErr
set $oldconf = ""
set $done = "FALSE"
return
topicserr:
gosub Startlogfile
write $LogFile " Invalid conference topic: "$conf", Unable to join\n"
send "\n"
set $oldconf = ""
set $done = "FALSE"
return
;************************************************
; Resign conference
; Uses variables:
; $conf - conference to resign
ResignConf:
readvar $conf
when "Invalid conference sele" goto resconferr
when "Topics are:" goto restopicerr
set $done = "TRUE"
set $oldconf = ""
set $docmd = "J "$conf"\n"
gosub DoCommand
if $done == "FALSE" then goto resignRet
set $docmd = "RES Y\n"
gosub DoCommand
if $done == "FALSE" then goto resignRet
resignErr:
dlwhen
dlwhen
wait "Command"
set $doctrlx = "TRUE"
resignRet:
return
resconferr:
gosub Startlogfile
write $LogFile " Invalid conference selection: "$conf", unable to resign\n"
gosub FixJoinErr
set $done = "FALSE"
goto resignErr
restopicerr:
gosub Startlogfile
write $LogFile " Invalid conference topic: "$conf", unable to resign\n"
send "\n"
set $done = "FALSE"
goto resignErr
;************************************************
; Append a file to the en of the other.
; Uses variables:
; $appendsource - File to append.
; $appenddest - Destination.
AppendFile:
if !exists $appenddest then goto afNotExists
cli "join >nil: \""$appenddest"\" \""$appendsource"\" TO \""$appenddest".tmp\""
cli "delete >nil: \""$appenddest"\""
cli "rename >nil: \""$appenddest".tmp\" \""$appenddest"\""
cli "delete >nil: \""$appendsource"\""
return
afNotExists:
cli "rename >nil: \""$appendsource"\" \""$appenddest"\""
return
;************************************************
GetConfList:
set $docmd = ""
gosub DoCommand
set $done = "TRUE"
cli "Delete >nil: "$Path"Conferences.txt"
capture $Path"Conferences.txt"
send "R SH A\n"
wait "Command"
set $doctrlx = "TRUE"
capture off
return
;************************************************
; Download file subroutine
; Uses variables:
; $filename - name of file to download
DownloadFile:
readvar $filename
set $done = "TRUE"
set $fnotfound = "FALSE"
set $fnotaccess = "FALSE"
set $DNnotavail = "FALSE"
set $fexpired = "FALSE"
when "File not found!" set $fnotfound = "TRUE"
when "You are not allowed" set $fnotaccess = "TRUE"
when "not available, please" set $DNnotavail = "TRUE"
when "has expired." set $fexpired = "TRUE"
when "ate files may not be move" set $dfnotmove = "TRUE"
set $gethold = "TRUE"
set $dfnotmove = "FALSE"
set $dtmpfile = $filename
set $docmd = "F ADD "$filename"\n"
gosub DoCommand
capture "t:filenote"$BBSName
wait "Command"
capture off
if $fnotfound == "TRUE" then gosub fnotfound
if $fnotaccess == "TRUE" then gosub fnotaccess
if $DNnotavail == "TRUE" then gosub DNnotavail
if $fexpired == "TRUE" then gosub fexpired
if $dfnotmove == "TRUE" then gosub dferr
gosub FixDnlWhens
set $doctrlx = "TRUE"
return
dferr:
send "F D "$dtmpfile"\n"
capture "t:filenote"$BBSName
gosub NoTimeout
wait "Command"
capture off
return
fnotaccess:
gosub Startlogfile
write $LogFile "Error: Unable to download file \""$dtmpfile"\", you don't have download access\n"
set $done = "FALSE"
return
fnotfound:
gosub Startlogfile
write $LogFile "Error: Unable to download file \""$dtmpfile"\", file not found\n"
set $done = "FALSE"
return
DNnotavail:
gosub Startlogfile
write $LogFile "Error: Unable to download file \""$dtmpfile"\", file not available.\n Please check with sysop.\n"
set $done = "FALSE"
return
fexpired:
gosub Startlogfile
write $LogFile "Error: Unable to download file \""$dtmpfile"\", your file time expired\n"
return
FixDnlWhens:
dwhen "File not found!"
dwhen "You are not allowed"
dwhen "not available, please"
dwhen "ate files may not be move"
dwhen "has expired."
return
;************************************************
; Upload file subroutine
; Uses variables:
; $filename - name of file to upload
; $filedescr - short description of file
; $notify - download notification (y/n)
; $detailed - detailed description for file
; $sendto - private upload to user (empty string/"ALL" = public file)
; $localfile - path/filename to upload.
; $conf - Try to make file private to conf (if $conf != "")
UploadFile:
readvar $filename
readvar $filedescr
readvar $sendto
readvar $conf
if !$BBSType == "MBBS" then goto Upl1
readvar $notify
if $notify == "" then set $notify = "0"
if !$notify == "0" then set $notify = "y"
if $notify == "0" then set $notify = "n"
Upl1:
readvar $detailed
readvar $localfile
set $msgfile = ""
set $done = "TRUE"
if $localfile == "" then set $localfile = $UpLoadDir$filename
if !exists $localfile then goto nofileupload
if $conf == "" then goto AfterUplJoin
when "Invalid conference sele" gosub joinerr
when "Topics are:" gosub topicserr
set $docmd = "J "$conf"\n"
gosub DoCommand
set $oldconf = $conf
wait "Command"
dlwhen
dlwhen
set $doctrlx = "TRUE"
if $done == "FALSE" then goto uplRet
AfterUplJoin:
when "enter both the first AND" goto puperr
when "that name is not registered" goto puperr
when "ALL is not allowed here!" goto puperr
when "Invalid file name!" goto upinvfile
when "File exists already" goto fexists
when "You are not allowed" goto UPnotallowed
when "each download" send $notify"\n"
when "file to be publicly ava" send "\n"
when "Directory name, <?>=lis" send "\n"
if $conf == "" then when "rivate to confer" send "n\n"
if !$conf == "" then when "rivate to confer" send "y\n"
if !$sendto == "" then set $docmd = "F PUP "$sendto"\n"
if $sendto == "ALL" then set $docmd = "F UP\n"
if $sendto == "" then set $docmd = "F UP\n"
gosub DoCommand
if $done == "FALSE" then goto uplRet
converse "ile name" $filename"\n"
converse "ion of file" $filedescr"\n"
wait "B01"
upload $localfile,Z
gosub NoTimeout
when "Command" goto uplfail
if $detailed == "" then goto NoDetailed
converse "description (Enter=Y)" "Y\n"
gosub SetupTimeout
set $msgfile = $detailed
gosub SendMessage
if $done == "FALSE" then goto uplRet
goto uplLateErr
NoDetailed:
converse "description (Enter=Y)" "N\n"
uplLateErr:
dlwhen
uplErr:
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
wait "Command"
set $doctrlx = "TRUE"
uplRet:
return
puperr:
gosub Startlogfile
write $LogFile "Error: Unable to do a private upload of "$filename"\n"
write $LogFile " User "$sendto" is not registered\n"
send "^X\n"
set $done = "FALSE"
goto uplErr
upinvfile:
gosub Startlogfile
write $LogFile "Error: Unable to upload "$filename", filename is invalid\n"
send "^X\n"
set $done = "FALSE"
goto uplErr
fexists:
gosub Startlogfile
write $LogFile "Error: Unable to upload "$filename", file already exists\n"
send "^X\n"
set $done = "FALSE"
goto uplErr
UPnotallowed:
gosub Startlogfile
write $LogFile "Error: Unable to upload "$filename", you don't have download access\n"
set $done = "FALSE"
goto uplErr
uplfail:
gosub Startlogfile
write $LogFile "Error: Unable to upload "$filename", upload failed\n"
set $done = "FALSE"
set $doctrlx = "TRUE"
goto uplLateErr
nofileupload:
gosub Startlogfile
write $LogFile "Error: Unable to upload "$filename", file not found\n"
set $done = "FALSE"
goto uplRet
;************************************************
; Do a custom command
; Uses variables:
; $commandstring - Command to execute.
CommandEvent:
readvar $commandstring
write $LogFile "Executing custom command:\n"
set $docmd = $commandstring"\n"
gosub DoCommand
capture $LogFile
gosub NoTimeout
when "File Command" goto CmdEvDone
when "Main Command" goto CmdEvDone
when "Utility Command" goto CmdEvDone
when "SYSOP Command" goto CmdEvDone
when "SIGOP Command" goto CmdEvDone
when "Misc Command" goto CmdEvDone
when "Mark Command" goto CmdEvDone
when "Read Ref Command" goto CmdEvDone
wait "Read Command"
CmdEvDone:
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
dlwhen
capture off
write $LogFile "\n"
set $done = "TRUE"
set $doctrlx = "TRUE"
set $oldconf = ""
return
;************************************************
; Send user info
; Uses variables:
; $msgfile - file user info is in
SendUserInfo:
readvar $msgfile
when "no resumé user info on this" goto NoUserInfo
set $docmd = "Q EDIT\n"
gosub DoCommand
converse "number displayed (Enter=" "y\n"
set $userinfo = "TRUE"
gosub SendMessage
set $userinfo = "FALSE"
set $done = "TRUE"
uinErr:
wait "Command"
set $doctrlx = "TRUE"
dlwhen
return
NoUserInfo:
gosub Startlogfile
write $LogFile "Error: Sorry, no resumé user info on this system!"
goto uinErr
;************************************************
; Set up BBS configuration
ConfigureBBS:
if $BBSType == "MBBS" then goto SetMBBSMode
if $BBSType == "MBBS_QWK" then goto SetMBBSMode
set $docmd = "R\n"
gosub DoCommand
when "Read Ref Co" set $readmode = "1"
when "Read Co" set $readmode = "2"
wait "Command"
dlwhen
dlwhen
set $doctrlx = "TRUE"
if $readmode == "2" then goto AfterSetMode
set $docmd = "MODE\n"
gosub DoCommand
goto AfterSetMode
SetMBBSMode:
set $qwkcfg = "TRUE"
set $docmd = "R MODE M\n"
gosub DoCommand
AfterSetMode:
set $docmd = "u m y "$AnsiMenues" "$UseColors" y n y\n"
gosub DoCommand
if $BBSType == "ABBS" then gosub SetSpNN
if $BBSType == "ABBS_QWK" then gosub SetSpNN
if $BBSType == "ABBS_QWK" then set $docmd = "gf b "$Bulletins"\n"
if $BBSType == "ABBS_QWK" then gosub DoCommand
set $docmd = "u addr\n"
gosub DoCommand
converse "treet address" "^X"$UserStreet"\n"
converse "code and town" "^X"$UserAddress"\n"
if $UserPhone == "" then set $UserPhone = "-"
converse "ome telephone number" "^X"$UserPhone"\n"
converse "ork telephone number" "\n"
wait "Command"
set $doctrlx = "TRUE"
set $done = "TRUE"
return
SetSpNN:
set $docmd = "sp n n\n"
gosub DoCommand
return
;************************************************
; Set get new files flag.
; Uses variables:
; $newfilesdate - date to use for newfiles.
GetNewFiles:
readvar $newfilesdate
set $NewFiles = "y"
set $done = "TRUE"
return
;************************************************
; Set the autologoff flag.
; Uses variables:
; $boolean - Logoff (y/n)
AutoLogOff:
readvar $boolean
set $AutoLogoff = "y"
if $boolean == "0" then set $AutoLogoff = "n"
set $done = "TRUE"
return
;************************************************
; Retract a message.
; Uses variables:
; $conf - Conference the message is in.
; $reforgnr - Number of message to kill.
RetractMsg:
readvar $conf
readvar $reforgnr
set $docmd = "j "$conf" "$reforgnr" kill\n"
gosub DoCommand
wait "Command"
set $doctrlx = "TRUE"
set $done = "TRUE"
return
;************************************************
; Retract a file
; Uses variables:
; $filename - File name to kill
RetractFile:
readvar $filename
set $docmd = "f ret "$filename " y\n"
gosub DoCommand
wait "Command"
set $doctrlx = "TRUE"
set $done = "TRUE"
return
AFrontDetect:
send "\e\e"
message "\nA nice front door escaped!\n"
return